// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App.vue'
//导入定义的路由router，里面有路由的组件和映射关系
import router from './router'

//导入ElementUI
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
//导入Vuex库store @/开头为绝对路径  否则相对路径
import store from '@/store'; 
//导入axios
import axios from 'axios'

//配置ElementUI插件
Vue.use(ElementUI)

Vue.config.productionTip = false // 阻止vue启动生产消息

// 配置 axios
//修改vue内部的$http为axios，使用时就可以用 this.$http.get()的方式请求
Vue.prototype.$http = axios 
//设置默认全局地址
axios.defaults.baseURL="http://localhost:8086/wanshu" 
// 添加请求拦截器，在发送请求之前做的事
axios.interceptors.request.use(function (config) {
  //每次请求头都带上token,从sessionStorage中尝试获取token，如果已经登录成功，则token不为空
  const token = sessionStorage.getItem("token");
  config.headers['Authorization'] = token;
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

/** 使用路由router拦截未登录用户 */
router.beforeEach((to, from, next) => {
  const token = sessionStorage.getItem("token")
  if (to.name !== 'login' && !token) next({ name: 'login' })
  else next()
}) 

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router, //全局挂载路由器实例，挂载router路由器到跟实例
  store, //全局挂载Vuex的store实例
  components: { App },
  template: '<App/>'
})
